`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////
////                                                              //// 
////                                                              //// 
////  Parte del proyecto "Controlador de luces de un semaforo"    ////  
////                                                              ////
////                                                              //// 
////  Description                                                 ////  
////                                                              //// 
////  To Do:                                                      //// 
////                                                              //// 
////  Author(s):                                                  //// 
////      - Sergio Gonzalez Q, sergiogq@hotmail.es                ////
////      - Alejandro Morales A, ale3191@gmail.com                //// 
////                                                              //// 
////////////////////////////////////////////////////////////////////// 
////                                                              //// 
//// Copyright (C) 2009 Authors and OPENCORES.ORG                 //// 
////                                                              //// 
//// This source file may be used and distributed without         //// 
//// restriction provided that this copyright statement is not    //// 
//// removed from the file and that any derivative work contains  //// 
//// the original copyright notice and the associated disclaimer. //// 
////                                                              //// 
//// This source file is free software; you can redistribute it   //// 
//// and/or modify it under the terms of the GNU Lesser General   //// 
//// Public License as published by the Free Software Foundation; //// 
//// either version 2.1 of the License, or (at your option) any   //// 
//// later version.                                               //// 
////                                                              //// 
//// This source is distributed in the hope that it will be       //// 
//// useful, but WITHOUT ANY WARRANTY; without even the implied   //// 
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //// 
//// PURPOSE.  See the GNU Lesser General Public License for more //// 
//// details.                                                     //// 
////                                                              //// 
//// You should have received a copy of the GNU Lesser General    //// 
//// Public License along with this source; if not, download it   //// 
//// from http://www.opencores.org/lgpl.shtml                     //// 
////                                                              ////
//////////////////////////////////////////////////////////////////////

module tb_Time_Parameters;

	// Inputs
	reg clk_i;
	reg rst_i;
	reg [1:0] time_parameter_selector_i;
	reg [3:0] time_value_i;
	reg reprogram_i;
	reg [1:0] interval_i;

	// Outputs
	wire [3:0] value_o;

	// Instantiate the Unit Under Test (UUT)
	Time_Parameters tb_TP (
		.clk_i(clk_i), 
		.rst_i(rst_i), 
		.time_parameter_selector_i(time_parameter_selector_i), 
		.time_value_i(time_value_i), 
		.reprogram_i(reprogram_i), 
		.interval_i(interval_i), 
		.value_o(value_o)
	);

	initial begin
		clk_i = 0;
		forever begin
			clk_i = ~clk_i;
			#20;
		end
	end
	
	initial begin
		// Initialize Inputs
		clk_i = 0;
		rst_i = 0;
		time_parameter_selector_i = 0;
		time_value_i = 0;
		reprogram_i = 0;
		interval_i = 0;

		// Wait 100 ns for global reset to finish
		#100;
        
		// Add stimulus here
		rst_i = 1;
		
		#100
		rst_i = 0;
		time_value_i = 8;
		reprogram_i = 1;
		
		#100
		reprogram_i = 0;
		
		#100;
		time_parameter_selector_i = 2;
		reprogram_i = 1;
		interval_i = 2;
		
		#100
		reprogram_i = 0;
		
		#100;
		time_value_i = 10;
		time_parameter_selector_i = 1;
		reprogram_i = 1;
		interval_i = 1;
		
		#100
		reprogram_i = 0;
		
		#100
		time_parameter_selector_i = 2;
		reprogram_i = 1;
		interval_i = 0;
		
	end
      
endmodule

